home *** CD-ROM | disk | FTP | other *** search
-
- Listing 2
-
- #include <iostream.h>
- #include <string.h>
-
- class String
- {
- friend ostream &operator<<
- (ostream &os, const String &s);
- public:
- String(const char *s);
- ~String() { delete [] str; }
- size_t length() { return len; }
- String &operator+=(char c);
- private:
- size_t len;
- char *str;
- };
-
- String::String(const char *s)
- {
- len = strlen(s);
- str = new char[len + 1];
- strcpy(str, s);
- }
-
- String &String::operator+=(char c)
- {
- char *p = strcpy(new char[len + 2], str);
- p[len++] = c;
- p[len] = '\0';
- delete str;
- str = p;
- return *this;
- }
-
- ostream &operator<<(ostream &os, const String &s)
- {
- return os << s.str;
- }
-
- int main()
- {
- String s1("Hello");
- String s2 = s1;
- cout << "s1 = " << s1 << '\n';
- cout << "s2 = " << s2 << '\n';
- s1 += '!';
- cout << "s1 = " << s1 << '\n';
- cout << "s2 = " << s2 << '\n';
- return 0;
- }
-
- ----------
-
-